import request from '@/utils/request'

/**
 * 用户注册
 * @param {Object} data - 用户注册信息
 * @returns {Promise}
 */
export function register(data) {
  return request({
    url: '/v1/user/register',
    method: 'post',
    data
  })
}

/**
 * 获取当前登录用户信息
 */
export function getUserInfo() {
  // 检查token是否存在
  const token = uni.getStorageSync('token');
  if (!token) {
    console.error('getUserInfo: token不存在');
    return Promise.reject(new Error('获取用户信息时token不存在'));
  }
  
  return request({
    url: '/v1/user',
    method: 'GET'
  })
}

/**
 * 更新用户信息
 * @param {number} userId - 用户ID
 * @param {Object} data - 更新数据
 * @param {string} [data.nickName] - 用户昵称
 * @param {string} [data.mobile] - 手机号
 * @param {File} [data.avatar] - 头像文件
 */
export function updateUserInfo(userId, data) {
  const formData = new FormData()
  
  if (data.nickName) {
    formData.append('nickName', data.nickName)
  }
  if (data.mobile) {
    formData.append('mobile', data.mobile)
  }
  if (data.avatar instanceof File) {
    formData.append('avatar', data.avatar)
  }

  return request({
    url: `/v1/user/${userId}`,
    method: 'PUT',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 更新用户富信息（包含头像URL）
 * @param {number} userId - 用户ID
 * @param {Object} data - 更新数据
 * @param {string} [data.nickName] - 用户昵称
 * @param {string} [data.mobile] - 手机号
 * @param {string} [data.avatar] - 头像URL
 */
export function updateUserRichInfo(userId, data) {
  return request({
    url: `/v1/user/richInfo/${userId}`,
    method: 'PUT',
    data,
  })
}

/**
 * 更新用户头像
 */
export function updateAvatar(data) {
  return request({
    url: '/v1/user/avatar',
    method: 'POST',
    data
  })
}

/**
 * 更新用户手机号
 */
export function updateMobile(data) {
  return request({
    url: '/v1/user/mobile',
    method: 'POST',
    data
  })
}

/**
 * 分页查询用户列表
 * @param {Object} params - 查询参数
 * @param {number} params.current - 当前页码
 * @param {number} params.size - 每页大小
 * @param {string} [params.keyword] - 搜索关键字(支持昵称、手机号、OpenID)
 * @param {string} [params.role] - 用户角色(0-普通用户，1-管理员)
 * @param {string} [params.status] - 用户状态(0-正常，1-禁用)
 * @param {string} [params.registerTimeStart] - 注册开始时间
 * @param {string} [params.registerTimeEnd] - 注册结束时间
 * @returns {Promise}
 */
export function getUserPage(params) {
  return request({
    url: '/v1/user/page',
    method: 'get',
    params
  })
}

/**
 * 获取用户选择列表
 * @param {string} [keyword] - 搜索关键字
 */
export function getUserSelection(keyword) {
  return request({
    url: '/v1/user/selection',
    method: 'GET',
    params: { keyword }
  })
}

/**
 * 修改用户状态
 * @param {number} userId - 用户ID
 * @param {string} status - 用户状态(0-禁用，1-启用)
 * @returns {Promise}
 */
export function updateUserStatus(userId, status) {
  return request({
    url: `/v1/user/${userId}/status`,
    method: 'put',
    data: { status }
  })
}

/**
 * 修改用户角色
 * @param {number} userId - 用户ID
 * @param {string} role - 用户角色(1-普通用户，2-管理员)
 * @returns {Promise}
 */
export function updateUserRole(userId, role) {
  return request({
    url: `/v1/user/${userId}/role`,
    method: 'put',
    data: { role }
  })
}

/**
 * 上传头像文件
 * @param {Object} file - 头像文件
 * @returns {Promise<string>} - 返回头像URL
 */
export function uploadAvatar(file) {
  const formData = new FormData()
  formData.append('file', file)
  
  return request({
    url: '/v1/upload/avatar',
    method: 'POST',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 获取用户摘要信息
 * 获取用户相册数、照片数、点赞数等统计数据
 * @returns {Promise}
 */
export function getUserSummary() {
  // 检查token是否存在
  const token = uni.getStorageSync('token');
  if (!token) {
    console.error('getUserSummary: token不存在');
    return Promise.reject(new Error('获取用户摘要信息时token不存在'));
  }
  
  return request({
    url: '/v1/user/summary',
    method: 'GET'
  });
}

// 其他用户相关的 API... 